﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SistemaLib.Entidades;
using SistemaLib.Gestores;
using Coolite.Ext.Web;

namespace SistemaWeb.Editores
{
    public partial class EdLogueoHoras : System.Web.UI.UserControl
    {
        public int IdTarea
        {
            get { return Convert.ToInt32(Session["idTarea"]); }
            set { Session["idTarea"] = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        public void CargarCampos(int idTarea)
        {
            IdTarea = idTarea;
            Tarea tar = GestorTareas.CargarTareaPorId(idTarea);
            Recurso rh = (Recurso)Session["user"];
            decimal horasConsumidas = GestorTareaTiempo.HorasConsumidas(idTarea, rh.Id);
            decimal horasAsignadas = GestorTareaAsignacion.HorasAsignadas(idTarea, rh.Id);

            txtNombreRH.Text = rh.Nombre;
            txtNombreTarea.Text = tar.Nombre;
            txtHorasConsumidas.Text = String.Format("{0:0.##}", horasConsumidas);
            txtHorasAsignadas.Text = String.Format("{0:0.##}", horasAsignadas);
            txtHoras.Text = "";


            popupEditor.Show();
        }

        

        protected void Guardar(object sender, AjaxEventArgs e)
        {
            try
            {
                /** VALIDACIONES ***/

                if (txtHoras.Text == "")
                    throw new Exception("El campo 'Horas' no puede estar vacio");                
                decimal horas;
                if (!Decimal.TryParse(txtHoras.Text, out horas))
                    throw new Exception("El campo 'Horas' debe ser numerico");

                

                ///*** Guarda las horas logueadas ***/
                Recurso rh = (Recurso)Session["user"];
                TareaTiempo tt = new TareaTiempo();
                tt.IdRH = rh.Id;
                tt.IdTarea = IdTarea;
                tt.FechaLog = DateTime.Now;
                tt.Horas = horas;

                GestorTareaTiempo.Guardar(tt);

                decimal horasConsumidas = decimal.Parse(txtHorasConsumidas.Text);
                decimal horasAsignadas = decimal.Parse(txtHorasAsignadas.Text);

                if (horasAsignadas > 0 && (horas + horasConsumidas) > horasAsignadas)
                {
                    Ext.Msg.Show(new MessageBox.Config
                    {
                        Title = "Confirme su accion",
                        Message = String.Format("Acaba de loguear {0} horas y se ha excedido de las horas {1} asignadas inicalmente.", horas.ToString(), txtHorasAsignadas.Text),
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.WARNING
                    });
                }
                else
                {
                    Ext.Msg.Show(new MessageBox.Config
                    {
                        Title = "Horas Registradas",
                        Message = "Las horas han sido logueadas correctamente.",
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.INFO
                    });
                }

                popupEditor.Hide();

            }
            catch (Exception ex)
            {
                Ext.Msg.Show(new MessageBox.Config
                {
                    Title = "No se pudo realizar la Asignacion",
                    Message = ex.Message,
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.ERROR
                });
            }
        }
    }
}